﻿using System.Collections.Generic;

namespace HK.Core.Common.Protocol.Data
{
    /// <summary>
    /// 接口 : 白名单
    /// </summary>
    public interface IWhiteList : IJsonData, IFilterData
    {
        /// <summary>
        /// 列表
        /// </summary>
        List<string> List { get; }
        
        /// <summary>
        /// 数量
        /// </summary>
        int Count { get; }

        /// <summary>
        /// 是否包含在白名单中
        /// </summary>
        /// <param name="iTarget">目标</param>
        /// <returns>true:包含; false:不包含;</returns>
        bool Contains(string iTarget);

        /// <summary>
        /// 追加目标对象
        /// <para>* 无效的目标对象，或者未通过过滤验证的，都将视为失败</para>
        /// </summary>
        /// <param name="iTarget">目标对象</param>
        /// <returns>true:追加成功; false:追加失败;</returns>
        bool AddTarget(string iTarget);

        /// <summary>
        /// 追加目标对象
        /// <para>* 无效的目标对象，或者未通过过滤验证的，都将视为失败</para>
        /// </summary>
        /// <param name="iTargets">目标对象</param>
        /// <returns>成功追加数量</returns>
        int AddTargets(IReadOnlyList<string> iTargets);
    }
}
